package org.android.brasil.projetos.oktoberfest2011.view;

import java.util.List;

import org.android.brasil.projetos.oktoberfest2011.R;
import org.android.brasil.projetos.oktoberfest2011.negocio.model.Apresentacao;
import org.android.brasil.projetos.oktoberfest2011.persistencia.ApresentacaoDAO;
import org.android.brasil.projetos.oktoberfest2011.utils.AnalyticsUtils;
import org.android.brasil.projetos.oktoberfest2011.utils.CompartilhamentoListener;
import org.android.brasil.projetos.oktoberfest2011.utils.ControleDeBackground;
import org.android.brasil.projetos.oktoberfest2011.utils.DataUtil;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

/**
 * 
 * @author júlio
 * 
 */
public class MeusEventosAdapter extends BaseAdapter {

	private LayoutInflater mInflater;
	private List<Apresentacao> apresentacoes;
	private Context ctx;
	private AnalyticsUtils mGa;

	public MeusEventosAdapter(Context context, List<Apresentacao> apr) {
		ctx = context;
		this.mInflater = LayoutInflater.from(context);
		this.apresentacoes = apr;

		this.mGa = AnalyticsUtils.getInstance(ctx);

	}

	public int getCount() {
		return apresentacoes.size();
	}

	public Object getItem(int position) {
		return position;
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		final int pos = position;

		final Apresentacao apr = apresentacoes.get(position);
		convertView = mInflater.inflate(R.layout.meus_eventos_item, null);
		TextView tvHora = (TextView) convertView.findViewById(R.idMeusEventos.tv_hora);
		TextView tvApresentacao = (TextView) convertView
				.findViewById(R.idMeusEventos.tv_apresentacao);

		TextView tvCategoriaELocal = (TextView) convertView
				.findViewById(R.idMeusEventos.tv_categoria_e_local);

		FrameLayout fl = (FrameLayout) convertView.findViewById(R.idMeusEventos.fl_base);

		View separator = (View) convertView
				.findViewById(R.idMeusEventos.action_separator);

		RelativeLayout rl = (RelativeLayout) convertView
				.findViewById(R.idMeusEventos.relativeLayoutItem);

		new CompartilhamentoListener(ctx, tvApresentacao, apr);

		CheckBox ivFavoritar = (CheckBox) convertView
				.findViewById(R.idMeusEventos.favoritar);

		ControleDeBackground.setBackgroundAgenda(new View[] { rl, fl }, separator,
				new TextView[] { tvHora, tvApresentacao, tvCategoriaELocal }, position,
				apr.getDia());

		tvHora.setText(DataUtil.formatarHora(apr.getHoraInicio()));
		tvApresentacao.setText(apr.getNome());
		ivFavoritar.setChecked(apr.isFavorito());

		tvCategoriaELocal.setText(apr.getCategoria() + " - " + apr.getSetor());

		ivFavoritar.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			private int p = pos;

			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				Apresentacao apr = apresentacoes.get(p);
				apr.setFavorito(isChecked);
				ApresentacaoDAO.open(ctx);
				ApresentacaoDAO.atualizar(apr);
				ApresentacaoDAO.close();

				// evento adicionada como favorito
				if (isChecked) {
					mGa.favTrackEvent(apr.getNome(), 1);
				} else {
					mGa.favTrackEvent(apr.getNome(), 0);
				}

			}
		});

		return convertView;
	}
}
